﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IXmlComparisonTabPage.cs" company="" />
// <summary>
//   Define an interface for XML comparison tab-pages.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Xompare
{
    /// <summary>
    /// Define an interface for XML comparison tab-pages.
    /// </summary>
    public interface IXmlComparisonTabPage : IXmlTabPage
    {
        /// <summary>
        /// Invoked when the 'Ignore Name Case' option is changed.
        /// </summary>
        /// <param name="newValue">The new chosen value indicating whether to ignore XML objects' name casing.</param>
        void OnIgnoreNameCaseChange(bool newValue);

        /// <summary>
        /// Invoked when the 'Ignore Value Case' option is changed.
        /// </summary>
        /// <param name="newValue">The new chosen value indicating whether to ignore XML objects' value casing.</param>
        void OnIgnoreValueCaseChange(bool newValue);

        /// <summary>
        /// Invoked when the 'Ignore White Spaces' options is changed.
        /// </summary>
        /// <param name="newValue">The new chosen value indicating whether to ignore XML objects' white spaces in name and value.</param>
        void OnIgnoreWhiteSpacesChange(bool newValue);

        /// <summary>
        /// Refresh the tab page, under decided conditions.
        /// </summary>
        /// <param name="ignoreNameCase">Whether to ignore XML objects' name casing. 'null' means do not change settings.</param>
        /// <param name="ignoreValueCase">Whether to ignore XML objects' value casing. 'null' means do not change settings.</param>
        /// <param name="ignoreWhiteSpaces">Whether to ignore white spaces on XML names and values. 'null' means do not change settings.</param>
        void SoftRefreshTab(bool? ignoreNameCase = null, bool? ignoreValueCase = null, bool? ignoreWhiteSpaces = null);
    }
}
